#ifndef __SHA512__37E74B56_8F6F_4A0D_8620_1C074970E328_H
#define __SHA512__37E74B56_8F6F_4A0D_8620_1C074970E328_H

#include <stddef.h>

#pragma warning(disable: 4267)

#define SHA224_DIGEST_LENGTH    28
#define SHA256_DIGEST_LENGTH    32
#define SHA384_DIGEST_LENGTH    48
#define SHA512_DIGEST_LENGTH    64
#define SHA_LBLOCK              16
#define SHA512_CBLOCK           (SHA_LBLOCK*8)
#define SHA_LONG64              unsigned __int64

typedef struct SHA512state_st {
    SHA_LONG64 h[8];
    SHA_LONG64 Nl, Nh;
    union {
        SHA_LONG64 d[SHA_LBLOCK];
        unsigned char p[SHA512_CBLOCK];
    } u;
    unsigned int num, md_len;
} SHA512_CTX;

unsigned char* Sha512Encrypt(const unsigned char* d, size_t n, unsigned char* md);

#endif
